47bb75dc546f9beeb968d432c7487926cf845c58,graylog2-server/src/main/java/org/graylog2/rest/resources/search/AbsoluteSearchResource.java,AbsoluteSearchResource,searchAbsolute,#String#String#String#number#number#String#String#,73

Before Change


        try {
            SearchResponse searchResponse;

            if (filter == null) {
                searchResponse = buildSearchResponse(
                        indexer.searches().search(query, buildAbsoluteTimeRange(from, to), limit, offset, sorting)
                );
            } else {
                searchResponse = buildSearchResponse(
                        indexer.searches().search(query, filter, buildAbsoluteTimeRange(from, to), limit, offset, sorting)
                );
            }

            return searchResponse;

After Change


            @ApiParam(title = "from", description = "Timerange start. See description for date format", required = true) @QueryParam("from") String from,
            @ApiParam(title = "to", description = "Timerange end. See description for date format", required = true) @QueryParam("to") String to,
            @ApiParam(title = "limit", description = "Maximum number of messages to return.", required = false) @QueryParam("limit") int limit,
            @ApiParam(title = "offset", description = "Offset", required = false) @QueryParam("offset") int offset,
            @ApiParam(title = "filter", description = "Filter", required = false) @QueryParam("filter") String filter,
            @ApiParam(title = "fields", description = "Comma separated list of fields to return", required = false) @QueryParam("fields") String fields,
            @ApiParam(title = "sort", description = "Sorting (field:asc / field:desc)", required = false) @QueryParam("sort") String sort) {
        checkSearchPermission(filter, RestPermissions.SEARCHES_ABSOLUTE);

        checkQuery(query);

        Sorting sorting = buildSorting(sort);

        final List<String> fieldList = parseOptionalFields(fields);
        final SearchesConfig searchesConfig = SearchesConfigBuilder.newConfig()
                .setQuery(query)
                .setFilter(filter)
                .setFields(fieldList)
                .setRange(buildAbsoluteTimeRange(from, to))
                .setLimit(limit)
                .setOffset(offset)
                .setSorting(sorting)
                .build();

        try {
            return buildSearchResponse(indexer.searches().search(searchesConfig));
        } catch (IndexHelper.InvalidRangeFormatException e) {
            LOG.warn("Invalid timerange parameters provided. Returning HTTP 400.", e);
            throw new WebApplicationException(400);